from usr.libs.scheduler import CronExpr, DateTime


# 测试用例
if __name__ == "__main__":
    # 测试跨天情况（23:59 + 1分钟）
    test_time = DateTime(2023, 1, 31, 23, 59)
    cron_expr = "0 * * * *"  # 每小时0分执行
    c1 = CronExpr(cron_expr)
    next_run = c1.get_next_time(test_time)
    print("跨天测试(1月31日23:59): 下一次执行时间: {}".format(next_run))  # 应该输出2月1日0:00
    
    # 测试跨月情况
    test_time = DateTime(2023, 1, 31, 23, 59)
    cron_expr = "0 0 1 * *"  # 每月1日0点执行
    c2 = CronExpr(cron_expr)
    next_run = c2.get_next_time(test_time)
    print("跨月测试(1月31日23:59): 下一次执行时间: {}".format(next_run))  # 应该输出2月1日0:00
    
    # 测试跨年情况
    test_time = DateTime(2023, 12, 31, 23, 59)
    cron_expr = "0 0 1 1 *"  # 每年1月1日0点执行
    c3 = CronExpr(cron_expr)
    next_run = c3.get_next_time(test_time)
    print("跨年测试(12月31日23:59): 下一次执行时间: {}".format(next_run))  # 应该输出2024年1月1日0:00

    c4 = CronExpr("10-30/5 * * * *")
    print("每个小时的 10至30 分钟期间每 5 分钟执行一次: {}".format(c4.get_next_time(DateTime.now())))
